package com.hellloop.pim.alphabeat.network;

import com.hellloop.pim.alphabeat.network.PIMMessage.MsgType;

public class PIMServerMessageProcessor {
	
	protected PIMServer _server;
	
	public void setPIMServer(PIMServer server){
		_server = server;
	}
	
	public void processMessage(PIMMessage msg) {
		_server.sendMessageToAllClients(msg);
	}
	
	public void processMessage(int clientId, PIMMessage msg) {
		if(msg==null) return;
		
		if( msg.getMsgType() == MsgType.ConnectionMsg ) {
			PIMConnectionMsg pimMsg = (PIMConnectionMsg)msg;//new PIMConnectionMsg( msg.getOprType(), msg.toString() );
			
			if( pimMsg.getOprType() == PIMConnectionMsg.RequestLogin ) {
				_server.processLoginRequest( (PIMConnectionMsg)pimMsg, clientId );
			}
			else if( pimMsg.getOprType() == PIMConnectionMsg.Disconnect ) {
				
			}
		}
		else if( msg.getMsgType() == MsgType.RoomMsg ) {
			PIMRoomMsg pimMsg = (PIMRoomMsg)msg;
			
			if( pimMsg.getOprType() == PIMRoomMsg.CreateRoom ) {
				_server.processCreateRoom(pimMsg.getRoomName());
			}
			else if( pimMsg.getOprType() == PIMRoomMsg.JoinRoom ) {
				_server.processJoinRoom(pimMsg.getPlayerId(), pimMsg.getRoomName());
			}
		}
		else if( msg.getMsgType() == MsgType.GameMsg ) {
			PIMGameMsg pimMsg = (PIMGameMsg)msg;
			
			if( pimMsg.getOprType() == PIMGameMsg.SentenseRequest ) {
				_server.processGenerateSentence(pimMsg.getRoomId());
			}
			else if( pimMsg.getOprType() == PIMGameMsg.UserListRequest ) {
				
			}
		}
		else _server.sendMessageToAllClients(msg);
	}
	
}
